package hhh.app.data.net;

import java.util.List;
import java.util.Map;

import hhh.app.data.bean.Cart;
import hhh.app.data.bean.Category;
import hhh.app.data.bean.MyResult;
import hhh.app.data.bean.Product;
import hhh.app.data.bean.ProductDiscount;
import hhh.app.data.bean.ProductImage;
import hhh.app.data.bean.ProductOption;
import hhh.app.data.bean.Review;
import retrofit2.http.FieldMap;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import rx.Observable;

/**
 * Created by hhh on 2016/10/24.
 */
public interface IApiService {
//    @GET("product/getproducts/{page}/{num}/{category}/{word}/{sort}")
//    Observable<MyResult<List<Product>>> getProducts(@Path("page") int page, @Path("num") int num,@Path("category") int category, @Path("word") String word, @Path("sort") String sort);

//    @FormUrlEncoded
//    @POST("product/getproducts")
//    Observable<MyResult<List<Product>>> getProducts(@Field("page") int page,
//                                                    @Field("num") int num,
//                                                    @Field("category") int category,
//                                                    @Field("word") String word,
//                                                    @Field("sort") String sort);

    @FormUrlEncoded
    @POST("product/getproducts")
    Observable<MyResult<List<Product>>> getProducts(@FieldMap Map<String,String> map);

    @GET("product/getproduct/{pid}")
    Observable<MyResult<Product>> getProductById(@Path("pid") int id);

    @GET("product/getproductimages/{pid}")
    Observable<MyResult<List<ProductImage>>> getProductImages(@Path("pid") int pid);

    @GET("product/getproductdiscounts/{pid}")
    Observable<MyResult<List<ProductDiscount>>> getProductDiscounts(@Path("pid") int pid);

    @GET("product/getproductoptions/{pid}")
    Observable<MyResult<List<ProductOption>>> getProductOptions(@Path("pid") int pid);

    @GET("review/getreviewsbyproductid/{pid}")
    Observable<MyResult<List<Review>>> getProductReviews(@Path("pid") int pid);

    @GET("category/getcategories")
    Observable<MyResult<List<Category>>> getCategories();

    @GET("category/getcategory/{cid}")
    Observable<MyResult<Category>> getCategory(@Path("pid") int id);

    @GET("cart/getcarts/{uid}")
    Observable<MyResult<List<Cart>>> getCarts(@Path("pid") int id);


}
